/*
 *  Empresa  : DATAPREV
 *  Classe Corporativa.
 *  Tipo     : Classe de Exce��o
 *  Arquivo  : DAOException.java
 */
package br.edu.flf.audioteca.dao.exceptions;

/**
 * Define as exce��es para DAOs.
 * 
 * @author Paulo de Tarso [paulo.gregorio@previdencia.gov.br]
 * @version 1.0, 08/05/2008.
 */
public class DAOException extends Exception {

    // ------------------------------------------------------- Vari�veis Locais

    /**
     * 
     */
    private static final long serialVersionUID = 3730886127122165940L;

    /**
     * Causa real da axce��o. Exce��o origin�ria. NUNCA PODER� SER NULL!
     */
    private final Exception excecaoOriginal;

    // ----------------------------------------------------------- Construtores

    /**
     * @param excecaoOriginalValue Passa a exece��o original.
     */
    public DAOException(final Exception excecaoOriginalValue) {
        this(excecaoOriginalValue, null);
    }

    /**
     * @param excecaoOriginalValue -
     *            NUNCA PODER� SER NULL
     * @param mensagem Mensagem da exce��o.
     */
    public DAOException(final Exception excecaoOriginalValue,
            final String mensagem) {

        super(mensagem);

        if (excecaoOriginalValue == null) {
            throw new IllegalArgumentException(
                    "A exce��o original nunca pode ser null!");
        }

        this.excecaoOriginal = excecaoOriginalValue;
    }

    // -------------------------------------------------------------- Acessores

    /**
     * @return the excecaoOriginal
     */
    public final Exception getExcecaoOriginal() {
        return excecaoOriginal;
    }

}
